<?php

require_once("../../util/util.php");
require_once("../../util/conexao.php");
require_once("regras/negocio/contasReceberNegocio.php");
$objNegocio = new ContasReceberNegocio();

if ($acao == "DUPLICATAS-AVULSAS") {
    $conexao = Conexao::conectar();

    if ($_POST) {
        $arrayDados = array();

        $arrayDados["cliente"] = $_POST["ddlCliente"];
        $arrayDados["parcelas"] = trim($_POST["txtparcelas"]);
        $arrayDados["juros"] = $_POST["txtjuros"];

        if (!empty($_POST["txtvencimento"]))
            $arrayDados["vencimento"] = Util::dataBd($_POST["txtvencimento"]);
        if (!empty($_POST["txttitulo"]))
            $arrayDados["valorTitulo"] = Util::moedaBd($_POST["txttitulo"]);

        $arrayDados["tipo"] = $_POST["ddlTipo"];
        $arrayDados["vendedor"] = $_POST["ddlVendedor"];
        $arrayDados["avalista"] = $_POST["ddlAvalista"];

        if (($arrayDados["cliente"] == 0) || empty($arrayDados["parcelas"]) || ($arrayDados["parcelas"] == 0) || empty($arrayDados["juros"]) || empty($arrayDados["vencimento"]) || empty($arrayDados["valorTitulo"]) || ($arrayDados["valorTitulo"] == 0.00) || ($arrayDados["vendedor"] == 0)) {
            $class = "erro";
            $mensagem = "Todos os campos em destaque devem ser preenchidos";
        } else {
            Util::begin();
            $idMovimento = $objNegocio->criarMovimento($arrayDados, $conexao);
            if (is_numeric($idMovimento) && ($idMovimento > 0)) {
                $sucesso = $objNegocio->criarTitulos($arrayDados, $idMovimento, $conexao);
                if ($sucesso) {
                    Util::commit();
                    //$class = "sucesso";
                    //$mensagem = "Duplicata Avulsa criada com sucesso.";                    
                    $_SESSION["titulosAvulsos"] = $objNegocio->retornaTitulosMovimento($conexao, $idMovimento);
                    echo "<script>window.location='contasreceber-da-titulos.php'</script>";
                } else {
                    Util::rollback();
                    $class = "erro";
                    $mensagem = "Problemas ao tentar criar títulos para o movimento.";
                }
            } else {
                Util::rollback();
                $class = "erro";
                $mensagem = "Problemas ao tentar criar movimento.";
            }
        }
    }

    $clientes = $objNegocio->retornarClientes($conexao);
    $vendedores = $objNegocio->retornarVendedores($conexao);
    $avalistas = $objNegocio->retornarAvalistas($conexao);

    Conexao::desconectar();
} elseif ($acao == "BAIXAR-TITULO") {
    if ($_POST) {
        $arrayDados = array();
        $arrayDados["desconto"] = Util::moedaBd(trim($_POST["txtdesconto"]));
        $arrayDados["acrescimo"] = Util::moedaBd(trim($_POST["txtacrescimo"]));

        //$valorpagar = ((Util::moedaBd($_POST["txtapagar"]) + $_POST["hdvalorpago"]) - $arrayDados["desconto"]) + $arrayDados["acrescimo"];
        $valorpagar = Util::moedaBd($_POST["txtapagar"]);

        $arrayDados["apagar"] = $valorpagar;
        $arrayDados["hdcodigo"] = $_POST["hdcodigo"];
        $arrayDados["valorTotal"] = $_POST["hdvaltotal"];

        if ($arrayDados["desconto"] == 0 && $arrayDados["acrescimo"] == 0 && Util::moedaBd($_POST["txtapagar"]) > $_POST["hdvaltotal"]) {

            $class = "erro";
            $mensagem = "valor a pagar maior que valor do título";
        } elseif ($arrayDados["desconto"] > 0 && $arrayDados["acrescimo"] == 0 && ($_POST["hdvaltotal"] - $arrayDados["desconto"]) != (Util::moedaBd($_POST["txtapagar"]) + $_POST["hdvalorpago"])) {

            $class = "erro";
            $mensagem = "valor a pagar invalido1";
        } elseif ($arrayDados["acrescimo"] > 0 && $arrayDados["desconto"] == 0 && ($_POST["hdvaltotal"] + $arrayDados["acrescimo"]) != (Util::moedaBd($_POST["txtapagar"]) + $_POST["hdvalorpago"])) {

            $class = "erro";
            $mensagem = "valor a pagar invalido2";
        } elseif ($arrayDados["acrescimo"] > 0 && $arrayDados["desconto"] > 0 && ((($_POST["hdvaltotal"] - $arrayDados["desconto"]) + $arrayDados["acrescimo"]) != (Util::moedaBd($_POST["txtapagar"]) + $_POST["hdvalorpago"]))) {

            $class = "erro";
            $mensagem = "valor a pagar invalido3";
        } else {

            (empty($_POST["hddataPrimeiroPagamento"])) ? $arrayDados["dataPP"] = date("Y-m-d H:i:s") : $arrayDados["dataPP"] = $_POST["hddataPrimeiroPagamento"];
            ($valorpagar >= $arrayDados["valorTotal"]) ? $arrayDados["quitado"] = "S" : $arrayDados["quitado"] = "N";

            Util::begin();
            $retorno = $objNegocio->baixarTitulo($arrayDados);

            if ($retorno) {

                list($retorno, $total) = explode("$", $objNegocio->verificarTituloEmAberto($arrayDados["hdcodigo"]));
                if ($retorno) {

                    if ($total == 0) {
                        $retorno = $objNegocio->atualizarStatusMovimento($_POST["hdcodigoMovimento"]);
                    }

                    if ($retorno) {
                        Util::commit();
                        echo "<script type='text/javascript'>window.location='contasreceber.php?msg=baixasucesso'</script>";
                    } else {
                        $class = "erro";
                        $mensagem = "falha ao tentar baixar movimento";
                    }
                } else {

                    $class = "erro";
                    $mensagem = "falha ao tentar verificar titulos em aberto";
                }
            } else {
                $class = "erro";
                $mensagem = "falha ao tentar baixar titulo";
            }

            Util::rollback();
        }
    }

    $titulo = $objNegocio->retornaDadosTitulo($codigo);

    //CALCULO DA MULTA
    $diasAtrazados = Util::calcularDias($titulo[0]['dataVencimento'], "INVERSO");
    if ($diasAtrazados > 0) {
        $num = ceil($diasAtrazados / 30);
        $porcentagemMulta = $num * $titulo[0]["multa"];
        $valorMulta = ($titulo[0]["valor"] * $porcentagemMulta) / 100;

        $objNegocio->atualizarValorMulta($codigo, $valorMulta);
        $titulo = $objNegocio->retornaDadosTitulo($codigo);
    }
} elseif ($acao == "GRID") {
    $arrayDados = array();

    if ((isset($_GET["hdPesquisar"])) && ($_GET["hdPesquisar"] == 1)) {

        $arrayDados["cliente"] = $_SESSION['cr']['cliente'] = $_GET["ddlcliente"];
        $arrayDados["de"] = $_SESSION['cr']['de'] = trim($_GET["txtDe"]);
        $arrayDados["ate"] = $_SESSION['cr']['ate'] = trim($_GET["txtAte"]);
        $arrayDados["status"] = $_SESSION['cr']['status'] = trim($_GET["ddlStatus"]);
        $arrayDados["tipodata"] = $_SESSION['cr']['tipodata'] = trim($_GET["rdtipodata"]);

        $limite = 0;
        $contas = $objNegocio->retornaContasReceber($limite, $arrayDados);
    } else {

        if (isset($_SESSION['cr'])) {

            $arrayDados["cliente"] = $_SESSION['cr']['cliente'];
            $arrayDados["de"] = $_SESSION['cr']['de'];
            $arrayDados["ate"] = $_SESSION['cr']['ate'];
            $arrayDados["status"] = $_SESSION['cr']['status'];
            $arrayDados["tipodata"] = $_SESSION['cr']['tipodata'];

            $limite = 0;
            $contas = $objNegocio->retornaContasReceber($limite, $arrayDados);
        } else {
            $contas = array();
        }
    }

    $clientes = Util::retornarClientes();
} else if ($acao == "CANCELAR-TITULO") {

    if ($_POST) {

        $mensagem = "";
        $class = "";

        $conexao = Conexao::conectar();

        $arrayDados = array();
        $arrayDados["motivo"] = trim($_POST["motivo_cancelamento"]);
        $arrayDados["id"] = $_POST["hdIdTitulo"];

        if (!empty($arrayDados["motivo"]) && !empty($arrayDados["id"])) {
            $objNegocio->cancelarTitulo($conexao, $arrayDados);
            $mensagem = "Título cancelado com sucesso";
            $class = "sucesso";
        } else {
            $mensagem = "Digite o motivo do cancelamento.";
            $class = "erro";
        }


        Conexao::desconectar();
    }
} elseif ($acao == "DUPLICATAS-AVULSAS-TITULOS") {

    $atualizado = 0;
    if ($_POST) {

        $conexao = Conexao::conectar();

        $titulos = array();
        for ($i = 0; $i < count($_SESSION["titulosAvulsos"]); $i++) {

            $titulos[$i]["id"] = $_POST["codigo_" . $i];
            $titulos[$i]["data"] = Util::dataBd($_POST["data_" . $i]);
            $titulos[$i]["valor"] = Util::moedaBd($_POST["valor_" . $i]);
        }

        Util::begin();
        if ($objNegocio->atualizarTitulos($titulos, $conexao)) {
            Util::commit();
            $class = "sucesso";
            $mensagem = "Títulos atualizados com sucesso.";
            $atualizado = 1;
            unset($_SESSION["titulosAvulsos"]);
        } else {
            Util::rollback();
            $class = "erro";
            $mensagem = "Problemas ao tentar atualizar títulos.";
        }

        Conexao::desconectar();
    }
}
?>